package 二叉树;

public class No101对称二叉树 {

    /**
     * 给定一个二叉树，检查它是否是镜像对称的。
     *
     *  
     *
     * 例如，二叉树 [1,2,2,3,4,4,3] 是对称的。
     *
     *     1
     *    / \
     *   2   2
     *  / \ / \
     * 3  4 4  3
     */

    public boolean isSymmetric(TreeNode root) {
        if(root==null)
            return true;
        return dg(root.left,root.right);
    }

    private boolean dg(TreeNode node1,TreeNode node2){
        if(node1==null&&node2==null)
            return true;
        if(node2 == null||node1==null)//有一个是空的
            return false;
        if(node1.val!=node2.val)
            return false;
        boolean flag1 = dg(node1.left, node2.right);
        boolean flag2=dg(node1.right,node2.left);
        return flag1&&flag2;
    }

}
